/**
 * 项目名称：
 * 包    名：com.cbdata.educloud.core.web.thirdapp
 * 文 件 名：SpringHttpService.java
 * 版本信息：
 * 日    期：2018年4月3日-下午5:25:43
 * Copyright (c) 2018河南中联大数据科技有限公司-版权所有
 * 
 */
package com.corecloud.tools;


import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.apachecommons.CommonsLog;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 类 名 称：SpringHttpService
 * 类 描 述：springHttp的服务类
 * 创 建 人：luhui
 * 修 改 人：luhui
 * 修改时间：2018年4月3日 下午5:25:43
 * 修改备注：
 * @version 1.0.0
 */
@CommonsLog
public class SpringHttpService {
	
	public static HttpEntity<MultiValueMap<String, Object>> getRequestEntity(Map<String, Object> paramBody, Map<String, String> paramHeader) {
		MultiValueMap<String, Object> bodyData = new LinkedMultiValueMap<String, Object>();
		bodyData.setAll(paramBody);
		HttpHeaders headers = new HttpHeaders();
		if(null!=paramHeader&&paramHeader.size()>0) {
			headers.setAll(paramHeader);
		}
		HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(bodyData,headers);
		return requestEntity;
	}


	/**
	 * 
	 * @Title: getResponseResultStrByPost
	 * @Description: 获取POST方式提交的字符串格式的响应结果
	 * @param paramBody
	 * @param paramHeader
	 * @param url
	 * @return 
	 * String
	 * 创 建 人：luhui
	 * 创建时间:2018年4月9日 下午4:42:19
	 * 修 改 人：luhui
	 * 修改时间:2018年4月9日 下午4:42:19
	 * @since  1.0.0
	 */
	public static String getResponseResultStrByPost(Map<String, Object> paramBody,Map<String, String> paramHeader,String url) {
		RestTemplate template = new RestTemplate();
		HttpEntity<MultiValueMap<String, Object>> requestEntity = getRequestEntity(paramBody, paramHeader);
		HttpEntity<String> response = template.exchange(url, HttpMethod.POST, requestEntity, String.class);
        String result = response.getBody();
        log.debug("字符串格式的响应结果："+result);
        return result;
	}
	
	/**
	 * 
	 * @Title: getResponseResultMapByPost
	 * @Description:获取POST方式提交的map格式的响应结果
	 * @param paramBody
	 * @param paramHeader
	 * @param url
	 * @return 
	 * Map<String,Object>
	 * 创 建 人：luhui
	 * 创建时间:2018年4月9日 下午4:43:03
	 * 修 改 人：luhui
	 * 修改时间:2018年4月9日 下午4:43:03
	 * @since  1.0.0
	 */
	public static Map<String,Object> getResponseResultMapByPost(Map<String, Object> paramBody,Map<String, String> paramHeader,String url) {
		RestTemplate template = new RestTemplate();
		HttpEntity<MultiValueMap<String, Object>> requestEntity = getRequestEntity(paramBody, paramHeader);
		HttpEntity<Map> response = template.exchange(url, HttpMethod.POST, requestEntity, Map.class);
		@SuppressWarnings("unchecked")
		Map<String,Object> resultMap = response.getBody();
		log.debug("Map格式的响应结果："+resultMap);
        return resultMap;
	}





}
